// 很棒的一条题目
#include <bits/stdc++.h> // 包含所有标准库头文件
using namespace std;
using ll = long long;
const int N = 1e6 + 5;
ll a[N];
int main() {
  ll n, m, c;
  ll ans = 0;
  cin >> n >> m >> c;
  for (int i = 1; i <= n; i++)
    cin >> a[i];
  sort(a + 1, a + 1 + n);

  for (int i = 1; i <= n; i++)
    a[n + i] = a[i] + m;

  for (int i = 1; i <= n; i++) {

    int p = upper_bound(a + 1, a + 1 + 2 * n, a[i + c]) - a - 1;
    ans += 1ll * (p - i) * (a[i + 1] - a[i]);
    //对于任意一段连续的无人的区间   [ a[i], a[i+1] )  ，
    //从这个区间内任意点出发，Takahashi 遇到的人员序列是完全相同的。贡献值都是(p - i) 
    // 因此，我们可以将这个区间内的所有点的距离和计算出来。

  }
  cout << ans;
}